28 #define KER_HASH_ALG_TC_HASH 0
29 #define KER_HASH_ALG_SHA1 1
30 #define KER_HASH_ALG_SHA256 2
31 #define KER_HASH_ALG_SHA512 3
32 #define KER_HASH_ALG_SHA3_256 4
33 #define KER_HASH_ALG_SHA3_512 5
34 #define KER_HASH_ALG_SM3 6
36 #define KER_CRYPT_ALG_DES 0
37 #define KER_CRYPT_ALG_AES 10
39 #define KER_CA_PK_SCHEME_NA 0
40 #define KER_CA_PK_SCHEME_RSA 1
41 #define KER_CA_PK_SCHEME_ECC 2
43 #define KER_REC_ALG_RSA_EMV 1
45 #define KER_HASH_SHA1_LEN 20
46 #define KER_HASH_SHA256_LEN 32
47 #define KER_HASH_SHA512_LEN 64
48 #define KER_HASH_SHA3_256_LEN 32
49 #define KER_HASH_SHA3_512_LEN 64
50 #define KER_HASH_SM3_LEN 32
52 #define KER_PK_MODULUS_LEN 248
53 #define KER_PK_EXP_LEN 3
54 #define KER_PK_HASH_LEN 20
55 #define KER_ECC_PK_P256_LEN 32
56 #define KER_ECC_PK_P521_LEN 66
58 #define KER_ECC_ASI_EC_SDSA_SHA256_P256 1
59 #define KER_ECC_ASI_EC_SDSA_SHA512_P521 2
60 #define KER_ECC_ASI_EC_SDSA_SHA3_256_P256 3
61 #define KER_ECC_ASI_EC_SDSA_SHA3_512_P521 4
62 #define KER_ECC_ASI_SM2_DSA_SM3_SM2_P256 5
63 #define KER_ECC_ASI_ODE_DH_EtM_AES_P256 20
64 #define KER_ECC_ASI_ODE_DH_EtM_AES_P521 21
65 #define KER_ECC_ASI_ODE_DH_EtM_SM4_SM2_P256 22
void KER_VOID
Definition: emv_platform.h:66
KER_INT8U KER_BOOL
Definition: emv_platform.h:67
uint8_t KER_BYTE
Definition: emv_platform.h:70
unsigned short KER_INT16U
Definition: emv_platform.h:61
#define KER_CTX_PARAM
Definition: emv_context.h:53
KER_INT16U hal_ecc_get_sign_len(KER_CTX_PARAM KER_BYTE btASI)
Returns ECC message signature length by ASI according to EMV Book 2, Appendix B2.4....
KER_BOOL hal_ecc_pk_check(KER_CTX_PARAM KER_BYTE btASI, const KER_BYTE *pbtPK, KER_INT16U usPKLen)
ECC pk check Recover the y-coordinate EMV Book 2, Appendix B2.2.1e.
#define KER_ECC_PK_P521_LEN
Definition: hal_crypt.h:56
#define KER_PK_MODULUS_LEN
Definition: hal_crypt.h:52
KER_BOOL hal_crypt_calc_hash_init(KER_CTX_PARAM KER_BYTE btAlg, KER_VOID *pExtra, KER_VOID **ppHashHandle)
Initiates hash calculation.
KER_BOOL hal_crypt_calc_hash(KER_CTX_PARAM KER_BYTE btAlg, KER_VOID *pExtra, const KER_BYTE *pbtDataBuffer, KER_INT16U usDataBufferLen, KER_BYTE *pbtHash, KER_INT16U *pusHashLen, KER_INT16U usHashSize)
Calculates hash for data buffer provided.
KER_BOOL hal_crypt_decrypt(KER_CTX_PARAM KER_BYTE btAlg, const KER_BYTE *pbtKey, KER_INT16U usKeyLen, const KER_BYTE *pbtIV, KER_INT16U usIVLen, const KER_BYTE *pbtEncryptedData, KER_INT16U usEncryptedDataLen, KER_BYTE *pbtResult, KER_INT16U *pusResultLen, KER_INT16U usMaxLen)
Performs decryption.
struct tag_HAL_CRYPT_PK HAL_CRYPT_PK
Get PK info structure.
KER_BOOL hal_ecc_msg_sign_check_complete(KER_CTX_PARAM KER_VOID *pCheckHandle, KER_BYTE btASI, const KER_BYTE *pbtPK, KER_INT16U usPKLen, const KER_BYTE *pbtSignature, KER_INT16U usSignatureLen)
ECC message signature check according to EMV Book 2, Appendix A2.2.3 (Completes check)
KER_BOOL hal_crypt_msg_recovery(KER_CTX_PARAM const KER_BYTE *pbtPK, KER_INT16U usPKLen, const KER_BYTE *pbtExp, KER_INT16U usExpLen, KER_BYTE btAlg, const KER_BYTE *pbtMsg, KER_INT16U usMsgLen, KER_BYTE *pbtResult, KER_INT16U *pusResultLen, KER_INT16U usMaxLen)
Message recovery according to EMV Book 2, Appendix A2.1.
KER_BOOL hal_crypt_check_ecc_cert_revocation(KER_CTX_PARAM KER_BYTE btKernelID, const KER_BYTE *pbtRID, KER_BYTE btRIDLen, KER_BYTE btKeyIndex, const HAL_CRYPT_CERT_INFO *pCert)
Checks ECC certificate against certificatye revocation list.
#define KER_PK_EXP_LEN
Definition: hal_crypt.h:53
KER_INT16U hal_crypt_get_hash_len(KER_CTX_PARAM KER_BYTE btAlg)
Returns HASH length by Hash ALG according to EMV Book 2, Appendix B3.
struct tag_HAL_CRYPT_CERT_INFO HAL_CRYPT_CERT_INFO
Check certificate revocation cert info structure.
#define KER_PK_HASH_LEN
Definition: hal_crypt.h:54
KER_BOOL hal_crypt_get_ca_pk(KER_CTX_PARAM KER_BYTE btKernelID, const KER_BYTE *pbtRID, KER_BYTE btRIDLen, KER_BYTE btKeyIndex, HAL_CRYPT_PK *pCA_PK)
Get CA PK by index from repositoty.
KER_BOOL hal_crypt_unpredict_num_calc(KER_CTX_PARAM KER_INT16U usUnpredNumLen, KER_BYTE *pbtUnpredNum)
Calculates unpredictable number.
KER_BOOL hal_ecc_msg_sign_check(KER_CTX_PARAM KER_BYTE btASI, const KER_BYTE *pbtPK, KER_INT16U usPKLen, const KER_BYTE *pbtMsg, KER_INT16U usMsgLen, const KER_BYTE *pbtSignature, KER_INT16U usSignatureLen)
ECC message signature check according to EMV Book 2, Appendix A2.2.3.
KER_BOOL hal_ecc_msg_sign_check_init(KER_CTX_PARAM KER_BYTE btASI, const KER_BYTE *pbtPK, KER_INT16U usPKLen, const KER_BYTE *pbtSignature, KER_INT16U usSignatureLen, KER_VOID **ppCheckHandle)
ECC message signature check according to EMV Book 2, Appendix A2.2.3 (Initiates check)
KER_BOOL hal_crypt_check_cert_revocation(KER_CTX_PARAM KER_BYTE btKernelID, const KER_BYTE *pbtRID, KER_BYTE btRIDLen, KER_BYTE btKeyIndex, const HAL_CRYPT_CERT_INFO *pCert)
Checks certificate against certificatye revocation list.
KER_BOOL hal_ecc_msg_sign_check_update(KER_CTX_PARAM KER_VOID *pCheckHandle, const KER_BYTE *pbtMsg, KER_INT16U usMsgLen)
ECC message signature check according to EMV Book 2, Appendix A2.2.3 (Update wuth MSG data)
KER_BOOL hal_crypt_calc_hash_update(KER_CTX_PARAM KER_VOID *pHashHandle, KER_BYTE btAlg, const KER_BYTE *pbtDataBuffer, KER_INT16U usDataBufferLen)
Passes data for hash calculation (can be executed several times)
KER_BOOL hal_crypt_encrypt(KER_CTX_PARAM KER_BYTE btAlg, const KER_BYTE *pbtKey, KER_INT16U usKeyLen, const KER_BYTE *pbtIV, KER_INT16U usIVLen, const KER_BYTE *pbtData, KER_INT16U usDataLen, KER_BYTE *pbtResult, KER_INT16U *pusResultLen, KER_INT16U usMaxLen)
Performs encryption.
KER_BOOL hal_crypt_unpredict_num_set_ac(KER_CTX_PARAM const KER_BYTE *pbtAc, KER_INT16U usAcLen)
Updates unpredictable (random) number calculator with last AC (9F26) value (only if it was obtained f...
KER_BOOL hal_crypt_calc_hash_complete(KER_CTX_PARAM KER_VOID *pHashHandle, KER_BYTE btAlg, KER_BYTE *pbtHash, KER_INT16U *pusHashLen, KER_INT16U usHashSize)
Calculates hash on prev. provided data.
KER_INT16U hal_ecc_get_pk_len(KER_CTX_PARAM KER_BYTE btASI)
Returns ECC PK length by ASI according to EMV Book 2, Appendix B2.4.1.
Check certificate revocation cert info structure.
Definition: hal_crypt.h:276
KER_INT16U usSize
Definition: hal_crypt.h:277
KER_BYTE btVer
Definition: hal_crypt.h:278
const KER_BYTE * pbtCertSerial
Definition: hal_crypt.h:280
KER_INT16U usCertSerialLen
Definition: hal_crypt.h:281
Get PK info structure.
Definition: hal_crypt.h:204
KER_INT16U usHashLen
Definition: hal_crypt.h:221
KER_BYTE btSignAlg
Definition: hal_crypt.h:214
KER_INT16U usSize
Definition: hal_crypt.h:205
struct tag_HAL_CRYPT_PK::@3::@5 ECC
KER_INT16U usExpLen
Definition: hal_crypt.h:219
KER_BYTE ar_btPK[KER_ECC_PK_P521_LEN]
Definition: hal_crypt.h:226
KER_BYTE btHashAlg
Definition: hal_crypt.h:215
KER_BYTE btVer
Definition: hal_crypt.h:206
KER_BYTE btScheme
Definition: hal_crypt.h:208
KER_BYTE ar_btHash[KER_PK_HASH_LEN]
Definition: hal_crypt.h:220
KER_BYTE ar_btExp[KER_PK_EXP_LEN]
Definition: hal_crypt.h:218
KER_BYTE ar_btModulus[KER_PK_MODULUS_LEN]
Definition: hal_crypt.h:216
KER_BYTE btASI
Definition: hal_crypt.h:225
union tag_HAL_CRYPT_PK::@3 Scheme
KER_INT16U usModulusLen
Definition: hal_crypt.h:217
KER_INT16U usPKLen
Definition: hal_crypt.h:227
struct tag_HAL_CRYPT_PK::@3::@4 RSA